<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // https://www.cnblogs.com/pangguoming/p/7373991.html

    // 1 1 2 3 5
    // 获取兔子数 当月兔子数 = 前两个月的兔子数之和
    // 求第12个月
    // 递归函数：一个函数，自己调用自己，就叫递归函数  递归函数要有结束的条件
    // 递归的思想：把一个复杂的问题简单化
    // function getSum(n) {
    //   if (n === 1 || n == 2) {
    //     return 1
    //   }
    //   return getSum(n-1) + getSum(n-2)
    // }

    // console.log(getSum(12))
    const list = [
      {id: '1', pid: '', name: '总裁办'},
      {id: '2', pid: '', name: '行政部'},
      {id: '3', pid: '', name: '人事部'},
      {id: '4', pid: '', name: '财务部'},
      {id: '5', pid: '4', name: '出纳'},
      {id: '6', pid: '4', name: '审计'},
      {id: '7', pid: '2', name: '学工'},
      {id: '8', pid: '1', name: '教研部'},
      {id: '9', pid: '8', name: 'java'},
      {id: '10', pid: '8', name: '前端'},
      {id: '11', pid: '8', name: 'python'}
    ]
    // 需求1：获取数组中所有的根部门
    // 需求2：获取任意id的子部门
    function listToTree (list, pid = '') {
      let newList = []
      list.forEach(item => {
        if (item.pid === pid) {
          // 给item添加子部门
          // const result = listToTree(list, item.id)
          // if (result.length > 0) {
          //   item.children = result
          // }
          item.children = listToTree(list, item.id)
          newList.push(item)
        }
      })
      return newList
    }

    // 获取id为'' 的子部分
    console.log(listToTree(list))
  </script>
</body>
</html>
